/**
 * 验证码发送防抖工具
 * @description 限制验证码发送频率，1秒内最多4个请求
 */

// 存储请求时间戳的数组
const requestTimestamps = []

// 时间窗口（毫秒）
const TIME_WINDOW = 1000

// 最大请求次数
const MAX_REQUESTS = 4

/**
 * 检查是否可以发送验证码
 * @returns {Object} { canSend: boolean, message: string }
 */
export function checkCaptchaThrottle() {
  const now = Date.now()
  
  // 清理超过时间窗口的旧请求记录
  const validTimestamps = requestTimestamps.filter(timestamp => now - timestamp < TIME_WINDOW)
  
  // 更新请求时间戳数组
  requestTimestamps.length = 0
  requestTimestamps.push(...validTimestamps)
  
  // 检查是否超过最大请求次数
  if (requestTimestamps.length >= MAX_REQUESTS) {
    return {
      canSend: false,
      message: '请求过于频繁，请稍后再试'
    }
  }
  
  // 记录本次请求时间戳
  requestTimestamps.push(now)
  
  return {
    canSend: true,
    message: ''
  }
}

/**
 * 重置防抖状态（可选，用于某些特殊场景）
 */
export function resetCaptchaThrottle() {
  requestTimestamps.length = 0
}

